﻿namespace SoftwareConsulting.BI11.NumericalMethods.Iterations
{
    /// <summary>
    /// Класс непрерывной дроби для незавершенной гамма-функции
    /// </summary>
    public class IncompleteGammaFunctionContinuedFraction : ContinuedFraction
    {	    
        private double _alpha;//параметр ряда	    
        private double _sum;//вспомогательная сумма

        /// <summary>
        /// Конструктор класса
        /// </summary>
        /// <param name="alpha">параметр ряда</param>
        public IncompleteGammaFunctionContinuedFraction(double alpha)
        {
            _alpha = alpha;
        }

        /// <summary>
        /// Вычисляет указанную дробь
        /// </summary>
        /// <param name="factorsIndex"></param>
        protected override void ComputeFactorsAt(int factorsIndex)
        {            
            _sum += 2;
            Factors[0] = (_alpha - factorsIndex) * factorsIndex;
            Factors[1] = _sum;
        }

        /// <summary>
        /// Инициализирует значение
        /// </summary>
        /// <returns></returns>
        protected override double InitializeValue()
        {
            _sum = X - _alpha + 1;
            return _sum;
        }
    }
}
